home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagg_m.zip / KEYBOARD.SWG / 0066_Detect Status Keys.pas < prev    next >
Pascal/Delphi Source File  |  1994-01-27  |  3KB  |  60 lines

  1. {***********************************************************************}
  2. PROGRAM KeyStatDemo;            { Dec 09/93, Greg Estabrooks.           }
  3. USES CRT;                       { Import Clrscr,Writeln,GotXY.          }
  4.  
  5. FUNCTION CapsOn :BOOLEAN;
  6.                 {  Routine to determine if Caps Lock is on.             }
  7. BEGIN                           { Test the keyboard status bit for Caps.}
  8.   CapsOn := (Mem[$0040:$0017] AND $40) <> 0;
  9. END;{CapsOn}
  10.  
  11. FUNCTION NumLockOn :BOOLEAN;
  12.                  {  Routine to determine if Num Lock is on.             }
  13. BEGIN                           { Test keyboard status bit for NumLock. }
  14.   NumLockon := (Mem[$0040:$0017] AND $20) <>0
  15. END;{NumLockOn}
  16.  
  17. FUNCTION ScrollOn :BOOLEAN;
  18.                  {  Routine to determine if Scroll Lock is on.          }
  19. BEGIN                           { Test keyboard status bit for S_Lock.  }
  20.     ScrollOn := (Mem[$0040:$0017] AND $10) <> 0;
  21. END;{ScrollOn}
  22.  
  23. FUNCTION AltPressed :BOOLEAN;
  24.                  {  Routine to determine if ALT key is being held down. }
  25. BEGIN                           { Test keyboard status bit for ALT.     }
  26.   AltPressed := (Mem[$0040:$0017] AND $08) <> 0;
  27. END;{AltPressed}
  28.  
  29. FUNCTION CtrlPressed :BOOLEAN;
  30.                  {  Routine to determine if Ctrl key is being held down.}
  31. BEGIN                           { Test keyboard status bit for Ctrl.    }
  32.   CtrlPressed := (Mem[$0040:$0017] AND $04) <> 0;
  33. END;{CtrlPressed}
  34.  
  35. FUNCTION LeftShift :BOOLEAN;
  36.                  {  Routine to determine if L_Shift is being held down. }
  37. BEGIN                           { Test keyboard status bit for L_Shift. }
  38.   LeftShift := (Mem[$0040:$0017] AND $02) <>  0;
  39. END;{LeftShift}
  40.  
  41. FUNCTION RightShift :BOOLEAN;
  42.                  {  Routine to determine if R_Shift is being held down. }
  43. BEGIN                           { Test keyboard status bit for R_Shift. }
  44.   RightShift := (Mem[$0040:$0017] AND $1) <> 0;
  45. END;{RightShift}
  46.  
  47. BEGIN
  48.   Clrscr;                       { Clear the screen of clutter.       }
  49.   REPEAT
  50.     GotoXY(1,1);                { Move Back to top of screen.        }
  51.     Writeln('CapsLock   : ',Capson,' ');
  52.     Writeln('NumLock    : ',NumLockOn,' ');
  53.     Writeln('Scroll Lock: ',ScrollOn,' ');
  54.     Writeln('Alt Key    : ',AltPressed,' ');
  55.     Writeln('Ctrl Key   : ',CtrlPressed,' ');
  56.     Writeln('Right Shift: ',RightShift,' ');
  57.     Writeln('Left Shift : ',LeftShift,' ');
  58.   UNTIL KeyPressed;             { Loop until a key is pressed.       }
  59. END.{KeyStatDemo}
  60. {********************************************************************}